Improved ease of access to the Internet has greatly increased its popularity and led to the development of new forms of communication over the net. One new development enables audio data to be transferred in real time, on demand. The waveforms comprising the audio data are digitized, and the resulting digital audio data are transferred over the Internet from a source to a connected personal computer as a continuous stream of packets. Each packet includes a predefined number of frames arranged in a temporally contiguous sequence; and each frame includes a different portion of the digital audio data. When the streams of packets are received by the client, the digital audio data are extracted and passed to an appropriate audio output device, such as a sound card, for play. Before output occurs, the digital audio data are converted to a suitable audio waveform file format, depending upon the type of platform of the client computer and the audio output hardware employed.
A problem with delivering real time audio from a server over the channel of a network arises if noise or some other data transmission fault occurs, causing a loss of one or more packets conveying the frames of digitized audio data. Loss of a packet containing N frames of temporally sequential audio data can have a significant impact on the intelligence communicated by the audio data. For example, if the lost packet includes digitized audio data communicating the word "not," a statement that originally communicated the idea "I am not a crook" would be heard by the recipient as "I am.sub.-- a crook." Clearly, it would be preferable to minimize any audible effect of a data loss or dropout to avoid this kind of problem.
Ideally, in addition to minimizing the effect of a data loss or dropout during transmission of the data to a recipient, if possible, a technique for conveying audio and other data should replace frames of the data that are not received due to dropout or other types of signal corruption and loss. Conventional schemes for transferring data can use cyclic redundancy or other error detection algorithms to detect that a loss has occurred, but generally are not able to fill in the data frames in a lost packet. Schemes that can correct a partial loss of the data are generally too processor intensive to operate in a real time system for playing the audio data that has been received.
Another desirable feature in a reliable method for transferring audio data would be the ability to prevent third parties from readily using the data. Although complicated encryption techniques might be employed for this purpose, it would be better to apply a relatively simple method for encrypting the data that does not add much processing overhead at either the server or the client end of the communication link.
Any method used to minimize the impact of packet loss must be very efficient. For handling real time audio data transmission over conventional telephone line modems, the packets must be processed quickly to avoid losing frames of data or causing the client to fall behind in processing the data transferred from the server. Any significant delay in processing the data that are received will be evident as an audible pause in the audible signal as the data are played by the client.
It will be apparent that a method for transferring data so as to minimize the effect of data loss can also be applied to other types of data besides audio data and used on other networks besides the Internet. In fact, almost any type of streaming data could be transferred using such a technique. For example, video data might be transferred bidirectionally between desktop video phones. The technique could also be applied to voice mail systems or to any system in which data tolerant of a limited number of errors must be conveyed between two computers.